package com.syqc.comlib

import android.content.Context
import com.bumptech.glide.GlideBuilder
import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.load.DecodeFormat
import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool
import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory
import com.bumptech.glide.load.engine.cache.LruResourceCache
import com.bumptech.glide.module.AppGlideModule
import com.bumptech.glide.request.RequestOptions


@GlideModule
class GlideAppModule : AppGlideModule() {
    override fun applyOptions(context: Context, builder: GlideBuilder) {
        super.applyOptions(context, builder)
        //最多 内存缓存 多少字节的数据
        val diskCacheSizeBytes = 1024 * 1024 * 100L; // 100 MB
        //最多 磁盘缓存 多少字节的数据
        val diskCacheSize = 1024 * 1024 * 50L // 50mb
        //指定的是数据的磁盘缓存地址
        val cacheDir = context.externalCacheDir
        //设置   内存缓存   大小
        builder.setMemoryCache(LruResourceCache(diskCacheSizeBytes))
        //设置bitmap 值 LruBitmapPool 是一个内存中的固定大小的 BitmapPool
        builder.setBitmapPool(LruBitmapPool(diskCacheSize))
        //设置  磁盘缓存   大小
        builder.setDiskCache(DiskLruCacheFactory(cacheDir!!.path, "glide", diskCacheSize))
        // 例如：全局设置图片格式为RGB_565
        builder.setDefaultRequestOptions(RequestOptions.formatOf(DecodeFormat.PREFER_RGB_565))
    }

    /**
     * 禁用清单解析 改善Glide初始化启动时间
     */
    override fun isManifestParsingEnabled(): Boolean {
        return false
    }
}